﻿using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;

namespace Phoenix.Abstractions
{
    public interface IPhoneApplicationFrame : INavigate
    {
        Uri Source { get; set; }
        JournalOwnership JournalOwnership { get; set; }
        bool CanGoBack { get; }
        bool CanGoForward { get; }
        Uri CurrentSource { get; }
        UriMapperBase UriMapper { get; set; }
        void StopLoading();
        void GoBack();
        void GoForward();
        event NavigatedEventHandler Navigated;
        event NavigatingCancelEventHandler Navigating;
        event NavigationFailedEventHandler NavigationFailed;
        event NavigationStoppedEventHandler NavigationStopped;
        event FragmentNavigationEventHandler FragmentNavigation;
        PageOrientation Orientation { get; }
        event EventHandler<OrientationChangedEventArgs> OrientationChanged;
        event EventHandler<ObscuredEventArgs> Obscured;
        event EventHandler Unobscured;
        UIElement GetElement();

#if WINDOWS_PHONE71
        IEnumerable<JournalEntry> BackStack { get; }
        JournalEntry RemoveBackEntry();
        event EventHandler<JournalEntryRemovedEventArgs> JournalEntryRemoved;
#endif
    }
}
